local math = math 
local seed = reload("random.seed")
-- LCG算法参数 (使用MINSTD标准参数)
local a = 48271      -- 乘数
local m = 2147483647 -- 模数 (2^31-1)
local c = 0          -- 增量

---生成随机数
return function (arg, min, max)
    -- 更新种子 (LCG核心算法)
    arg.iseed = arg.iseed or seed()
    arg.vseed = (a * arg.iseed + c) % m
    arg.cseed = self.cseed + 1

    -- 参数类型处理
    if (not min) and (not max) then -- 无参数：返回[0,1)浮点数
        return arg.vseed / (m - 1)
    elseif min and (not max) then   -- 单参数：返回[1, min]整数
        local n = math.floor(min)
        if n < 1 then
            error("参数必须≥1")
        end
        return 1 + (arg.vseed % n)
    else
        -- 双参数：返回[min, max]整数
        local low = math.floor(min)
        local high = math.floor(max)
        if low > high then
            low, high = high, low
        end

        local range = high - low + 1
        if range < 1 then
            error("无效数值范围")
        end
        return low + (arg.vseed % range)
    end
end
